Starting with version 1.3, the addition of the high-density 1.5mb drive
resulted in the stack limit (__SPLIM_init) being set to 0x3FFF. The SPLIM
register is set by the bootloader using the __SPLIM_init value and is not
changed by any application code.

With version 1.8, .bss allocation was changed to use the "near" attribute
and let the linker place data in the lower 8K and put large buffers (like
the 1.5mb drive track buffer) in higher memory as the linker saw fit. This
resulted in the stack being above the SPLIM values shown above. (e.g., the
new stack range can use memory from 0x5000 up through 0x7FFF).

If an old FDC+ is updated with this new firmware in the field (i.e., the
bootloader itself does not change), then the new application immediately
causes a stack exception trap since the new stack range is above the 0x3FFF
SPLIM set by the bootloader.

To get around this problem, version 1.8 and newer applications set a new
SPLIM at the "NormalMode" and "MonitorMode" entry points so that the SPLIM
set by the bootloader doesn't affect the new application.

In the reverse situation - a new board with a bootloader that is part of
version 1.8 or newer - the stack usage of the old firmware will always
be below the new SPLIM of 0x7FFF, so old firmware can be installed in
the field on a new board and it will work.





